#include<stdio.h>

#define N 100

int main(void){
    int i,n,a[N];
    int *ptr=a;

    scanf("%d",&n);
    for ( i = 0; i < n; i++)
    {
       scanf("%d",a+i); //这里也是直接引用地址偏移，a数组首地址
    }
    printf("原来数据：\n");
   for ( i = 0; i <n; i++)
 {
    printf("%d ",a[i]);
 }
 printf("\n");

printf("用数组名/下标法引用数据\n");
 //用数组名/下标法引用数据元素
 for ( i = n-1; i >=0; i--)
 {
    printf("%d ",a[i]);
   
 }
  
 printf("\n");
printf("用数组名/偏移量引用数据\n");
  //用数组名/偏移量引用数据元素
 for ( i = n-1; i >=0; i--)
 {
    printf("%d ",*(a+i)); //*()是对a数组的引用，相当于地址改变，直接引用值
    
 }
 printf("\n");
    
   printf("用指针/偏移量法引用数据\n");
for ( i = n-1; i >=0 ; i--)
{
    printf("%d ",*(ptr+i)); //ptr指针指向a数组首地址，这里使用指针偏移+i来进行遍历，跟2数组引用很像，只不过用的指针
}
 printf("\n");

  printf("用指针/下标法法引用数据\n");
for ( i = n-1; i >=0 ; i--)
{
    printf("%d ",ptr[i]); //ptr[i]相当于 *a[i] ，是对a[i]的引用
}
 printf("\n");

   return 0;
}